Flash memory devices may store information in the form of an electrical charge which may be programmed into cells by injecting electrons between electrically isolated floating-gates of the cells, where the electrons may be trapped by the insulating properties of the floating-gates. In single-level cell (SLC) devices, each cell may either be programmed with charge or may remain un-programmed (erased), thus effectively defining two binary states to store one bit of information per cell. Multi level cell (MLC) devices may store more than one bit per cell by applying electrical charge to the floating gates in one of multiple (n) levels. Thus, an (n)-level flash cell, where n=2^k, may store k bits of information, where each combination of k bits is mapped (e.g. via Gray coding) to one of n program levels. When programming a previously programmed cell, the cell may be overwritten and the cell charge may be erased, for example, by reducing the charge to a constant reference charge value.
Flash memory devices may store information bits in logical units, such as pages, which may encompass several thousands of cells (e.g. 4096, 8192 bytes). Each page may store data for a different j-th bit (j=1, 2, k) of each cell in a row of cells. Thus, a physical row of cells may be programmed using k information pages. When the row of cells is read, all k pages may be read. A plurality of (e.g., 32 or 64) physical rows may form a block. A physical row may be the smallest set of cells which may be programmed simultaneously and a block may be the smallest set of cells which may be erased simultaneously, although other memory partitions may also be used.
The amount of electrical charge stored in the floating gate cell may be directly related to the voltage level used to fully conduct current across the cell's transistor gate. Therefore, the amount of charge in a cell may be measured by the minimal gate voltage level used for conduction (e.g., also known as threshold voltage, VT). Since the actual charge level may vary among cells programmed to a certain program level, the specific threshold voltage may also vary among these cells.
Flash memory devices may be read by comparing the threshold voltage of a cell or a group of cells to one (or more) read threshold(s) or decision level(s). The read threshold(s) may divide voltages into a plurality of different voltage ranges, each associated with a different one of n program levels of the multi-level cell. Read operations may determine within which range the cell voltage falls, and therefore, the associated program level and value of the cell. Each page may be read using a subset of the read threshold(s) used to define the value of the bit associated with that page.
During the life span of a flash memory device, the insulating properties of the floating-gates may degrade and the charge levels of cells may shift to other values, which may be referred to as “charge loss.” Charge loss or other errors in the charge stored in cells may result from programming errors (e.g., either intentional or not), age, storage temperature, repeated use of program/erase cycles, retention and various other reasons. Charge loss may cause the cell voltage to decrease causing a spontaneous change in their programming levels generating errors in the flash memory device.